![【新機能】Amazon Glacierのアーカイブに上書き、削除禁止の「ロックポリシー」機能がつきました。](https://devio2023-media.developers.io/wp-content/uploads/2014/05/Amazon_Glacier.png)
【新機能】Amazon Glacierのアーカイブに上書き、削除禁止の「ロックポリシー」機能がつきました。
こんにちは、せーのです。 今回ご紹介するのはAmazon Glacierの新機能です。この機能を使うことによってGlacierに保存されたオブジェクトの書き換えや削除をAWSの機能として禁止させることができ、その期間も自由にポリシー設定することができるようになります。
どういう時に使うの?
AWSは色々な企業の情報も扱うことが多いわけですが、企業にはそれぞれ情報に関するポリシーやコンプライアンスが定められています。その中には「情報の保存」も厳しく定められている事も多く、その情報が「書き換えられていないこと」「削除されていないこと」を証明するためにCloudTrail、S3のバージョン管理などの証跡サービスを使ったりします。しかし金融業などではそもそも「書換不能」「消去不能」なフォーマットで情報を保存するべし、という規則が定められています。今回のロックポリシーはこのような「絶対に書き換えられない」「絶対に削除できない」ポリシーを適用することで企業コンプライアンスをクリアできる、という場合や多人数、社外の会社さんに運用を頼む時等に絶対にログを消さないで欲しい、というようなケースの場合に「消えた時どうするか」ではなく「そもそも消えない」という状況を作り出すために使います。
ロックポリシーのルール
ではこのロックポリシーの具体的な内容を見て行きましょう。ロックポリシーにはいくつか特徴があります。
ロックポリシーは書き換えられない
一度ロックポリシーを適用するとそのポリシーを変更することはできません。ただ別のアクセスポリシーを作成、適用することによって読み取り権限を第三者に与えることはできます。監査時などに一時的にユーザーに権限を与える時には便利ですね。
ロックは二段階
ロックポリシーを変更できないので一発でセットするのはリスクが高いです。そこでロックポリシーはセットに二段階のプロセスを踏みます。
- InitiateVaultLockをcallします。これにより作成したポリシーでロックがテスト状態(InProgress)になります。その時に戻り値としてLockIDが返ってきます。このLockIDは後で使用します。このテスト状態は最大24時間続きます。つまりこの24時間以内にテストを行うわけです。
- テスト状態のポリシーは本番同様のロック状態になっているので、この間にポリシーが適切にセットされているか様々な角度からテストを行います。
- テストの結果問題がなければCompleteVaultLockをcallします。これでロックポリシーが確定します。逆に問題があればAbortVaultLockをInitiateVaultLockから24時間以内にcallします。これによってロックは解除され元の状態に戻ります。
やってみた
では早速やってみましょう。Glacierを開くと[Vault Lock]という新しいタブが増えています。選択してみると[Create Vault Lock policy]というボタンがありますので押してみましょう。
ボタンを押すとテキストボックスと[Add a permission]というボタンが見えます。これはIAMポリシーやS3のバケットポリシー同様、ここに直接JSON形式でポリシーを書くことも出来ますし、[Add a permission]からウィザード形式で選択することもできます。今回は[Add a permission]を押してみたいと思います。
ボタンを押すとポリシーを設定したことがある人にはお馴染みの画面が出てきます。[Effect]はこれから指定するアクションを許可するか拒否するか、[Principal]は対象となるユーザーのARN、Actionは対象となるアクションを選びます。
[Action]の一覧はこのようになっています。何となく単語の内容でわかりますね。
今回は全員がアーカイブを削除することを禁止してみたいと思います。
[Add a permission]ボタンを押すと内容がJSON形式で先ほどのテキストボックスに自動で書かれます。この状態で[Initiate Vault Lock]ボタンを押すとロックポリシーの「テスト状態」に入ります。
テスト状態に入るとポップアップでこのような表示が出ます。この[Lock ID]を後で使うのでメモしておきましょう。
テスト状態に入るとこのような感じになります。下の方にテストの残り時間が表示されていますね。
この状態で[Delete Vault Lock]を押すとテスト時間内であればロックポリシーがDeleteされ、元の状態に戻ります。 一旦ロックポリシーを削除し、今度はVaultのDeleteを禁止してみましょう。
この状態でValutを削除してみましょう。
「権限がないよ」というエラーが出ました。想定通りです。ではこの状態で[Complete Vault Lock]を押してみます。
するとこのようなポップアップが出ます。ここに先程出たLock IDを入れて注意書き(一旦この設定をすると元には戻せないけどいいですね、という内容)にチェックを入れて[Complete Valut Lock]ボタンを押すとロックポリシーが適用されます。
まとめ
いかがでしたでしょうか。順番にやっていくとそんなに難しくないと思います。難しくないだけに設定を間違えた状態でCompleteしてしまうと取り返しの付かないことになりますので、テスト手順書等を作り、きっちり抜け漏れが無いようにテストした上でCompleteするようにして下さい。これでコンプライアンスもセキュリティポリシーもOK、ですね!